<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>类声明</title>
</head>

<body>
    <script>
        /*
        class类

        ES6提供了更接近传统语言的写法，引入了Class类这个概念，作为对象的模板，通过class关键字，可以定义类。基本上，
        ES6的class可以看做只是一个语法糖，它的绝大部分功能。ES5都可以做到，新的class写法只是让对象原型的写法更加清晰，更像面向对象编程的语法而已。
        
        知识点:
        1.class声明类
        2.constructor定义构造函数初始化
        3.extends继承父类
        4.super调用父级构造方法
        5.static定义静态方法和属性
        6.父类方法可以重写
        */

        //手机
        function Phone(brand, price) {
            this.brand = brand;
            this.price = price;
        }

        //添加对象的方法
        Phone.prototype.call = function () {
            console.log('我可以打电话!');
        }

        //实例化对象
        let Huawei = new Phone('华为', 5999);

        Huawei.call();
        console.log(Huawei);

        //class
        class IPhone {
            //构造方法：名字不能修改是固定的
            constructor(brand, price) {
                this.brand = brand;
                this.price = price;
            }

            //方法必须使用该语法，不能使用ES5的对象完整形式
            call() {
                console.log('我可打电话!!');
            }
        }

        let onePlus = new IPhone("1+", 1999);

        console.log(onePlus);


    </script>
</body>

</html>